package com.tofacebook.mybatis.mapper;

import com.tofacebook.mybatis.model.Category;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface ParameterMapper {

    /**
     * 使用商品分类名称来查询我们某一条商品分类信息
     *
     * 如果说数据库表里有重复记录，那么，可以改表里面的数据【一般不要改】
     * 最好的方式就会说返回的结果类型
     */
    Category getCategoryByName(String name);

    /**
     * 传递过个参数
     * 把测试用例里面传递过来的封装到Map集合里面
     * map.put("arg0",1448l)
     * map.put("arg1","liwei1")
     * map.put("param1",1448l)
     * map.put("param2","liwei1")
     */
    Category  getCateByCatIdByName(Long catId,String name);

    /**
     * 使用map的方式去传递参数
     * map.put("catId",144bl)
     * map.put("name","liwei1")
     */
    Category  getCateByMap(Map map);

    /**
     * 传递对象 去查询
     */
    List<Category> getCategoryList(Category category);
    /**
     * @Param(value="某一个变量名")
     * 那么在我们sql映射文件里面直接可以使用的变量名来获取对应参数值
     * 把name这个变量名放在map集合
     * map.put("name","test信息")
     * map.put("param1","test信息")
     */
    List<Category> getCategoryByParam(@Param(value="name") String name);

    int getCount(@Param(value= "catId") Long catId);
    /**
     * map.put("cat_level",1)
     * map.put("parent_cid",1)
     * ......
     * {cat_id=1,name=22,....}
     */
    Map getCategoryByMap(@Param(value= "catId") Long catId);

    /***
     * 数据结构：[{},{},{}]
     * Map<String,Object> map :key=String ,value=Object
     */
    List<Map<String,Object>>getListByMap(@Param(value="parentCid") Integer parentCid);
/**
 * 数据结构：{cat_id ={},cat_id ={},cat_id ={}.......}
 * 以pms_category表里面的主键id作为该条记录的唯一key
 */
@MapKey("cat_id")
Map<String,Object> getMapByKey(@Param(value="parentCid") Integer parentCid);
}
